package com.wei.consumer.config;

import com.netflix.loadbalancer.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class RibbonRuleConfig {

    @Bean
    public IRule iRule(){
        // 1.采用随机策略
        // return new RandomRule();
        // 2.采用轮询策略
        //return new RoundRobinRule();
        // 3. 先过滤掉多次访问故障的服务，以及并发连接数超过阈值的服务，然后对剩下的服务按照轮询策略进行访问
        //return new AvailabilityFilteringRule();
        // 4.根据平均响应时间计算所有服务的权重，响应时间越快服务权重越大，被选中的概率越高，如果服务刚启动统计不足，按照轮询

        return new WeightedResponseTimeRule();
        // 5.按照轮询策略 如果分发的服务不可访问，那么指定的时间内，分发到其他可用的服务
        //return  new RetryRule();
        // 6. 先过滤掉多次访问故障的服务，然后选择一个并发量最小的服务
        //return new BestAvailableRule();
        // 7.默认   综合判断服务节点所在区域的性能和服务节点的可用性，来决定选择哪个服务
        //return ZoneAvoidanceRule();
    }

}
